﻿<?php
/**
 * Classe Db da tabela TB_FUNCIONARIO
 * 
 * @author			Mário R. Castro
 * @copyright		Voitech Sistema
 * @package			SEMAS
 * @subpackage		semas.application.models.Db
 * @version			1.0
*/
class App_Model_Db_Funcionario extends Voitech_Db{

	protected $_name 		= 'tb_funcionario';
    protected $_primary 	= 'co_funcionario';
	
	static private $instancia;

	/**
	 * @return App_Model_Db_Funcionario
	 */
	static public function build() {
		if( !isset( self::$instancia ) ) {
			$classe = __CLASS__;
			self::$instancia = new $classe();
		}
		return self::$instancia;
	}
	
	public function listarTodos(Voitech_TO $obTO=null){
            $obSelect =  $this->getAdapter()->select()
                                       ->from(array('tb_funcionario'=>'tb_funcionario'))
                                       ->columns(array(
                                       					'co_funcionario'=>'tb_funcionario.co_funcionario'
                                       				   ,'ds_cargo'=>'tb_funcionario.ds_cargo'
                                                       ,'co_pessoa'=>'tb_funcionario.co_pessoa'
                                                       ,'no_pessoa'=>'tb_pessoa.no_pessoa'
                                                       ,'st_status'=>'tb_funcionario.st_status'
                                                       ,'dt_cadastro'=>'tb_funcionario.dt_cadastro'
                                                       ,'fl_excluir' => '(CASE 
																			    WHEN (SELECT count(*) FROM tb_nota_fiscal WHERE tb_nota_fiscal.co_funcionario = tb_funcionario.co_funcionario) > 0 THEN
																			    	\'N\'
																			    WHEN (SELECT count(*) FROM tb_ocorrencia WHERE tb_ocorrencia.co_funcionario = tb_funcionario.co_funcionario) > 0 THEN
																			    	\'N\'	
																			    ELSE
																			    	\'S\'
																		  END)'
                                                  ))                                     
                                       ->joinLeft(array('tb_pessoa'=>'tb_pessoa'),'tb_funcionario.co_pessoa = tb_pessoa.co_pessoa');   

            if( !empty( $obTO->co_funcionario ) ) {
                $obSelect->where('tb_funcionario.co_funcionario =?', $obTO->co_funcionario);
            }
            if( !empty( $obTO->no_pessoa ) ) {
                $obSelect->where('tb_pessoa.no_pessoa like ?', "%".$obTO->no_pessoa."%");
            }
	        if( !empty( $obTO->ds_cargo ) ) {
                $obSelect->where('tb_funcionario.ds_cargo like ?', "%".$obTO->ds_cargo."%");
            }            
            if( !empty( $obTO->st_status ) ) {
                $obSelect->where('tb_funcionario.st_status =?', $obTO->st_status);
            }
            //var_dump($obSelect->assemble());exit;
            return $this->getAdapter()->fetchAll($obSelect);			   						   
	}	
	
}